package com.itheima.d15_homework.num3;

import java.io.*;
import java.util.Scanner;

import static com.itheima.d15_homework.num1.CopyFile.copyFile;

/**
 * 题目3：(综合扩展) 文件搜索 加复制
 */
public class Test3 {
    private static File targetFile2;

    public static void main(String[] args) throws IOException {
        //1.创建file对象 指定源文件 目标文件
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要搜索的文件目录:");
        String src = sc.next();//源文件
        File srcFile = new File(src);
        System.out.println("请输入你要搜索的文件名+后缀");
        String target = sc.next();
        File targetFile = new File(target);
        //2.搜索源文件
        targetFile2 = findFile(targetFile, srcFile);
        //3.进入源文件看是否是所需要的文件
        System.out.println("请输入要复制的目录:");
        String dest = sc.next();
        File destFile = new File(dest);

        //4.复制到目标文件
        copyFile(targetFile2, destFile);
    }

    public static File findFile(File targetFile, File srcFile) {
        //1.进入文件夹
        File[] files = srcFile.listFiles();
        //1.1遍历文件夹
        for (File file : files) {
            //1.2判断 是文件
            if (file.isFile()) {
                //如果是文件 就判断是否是要找的文件
                if (file.getName().contains(targetFile.getName())) {
                    System.out.println("已找到该文件" + file.getName());
                    return file;
                }
            } else {//是文件夹
                findFile(targetFile, file);
            }
        }
        return null;
    }

    public static void copyFile(File src, File dest) throws IOException {
        //判断极端情况
        if (!dest.exists()) {
            dest.mkdirs();
        }
        if (src != null && src.isFile()) {

            FileInputStream fis = new FileInputStream(src);
            FileOutputStream fos = new FileOutputStream(new File(dest, src.getName()));
            BufferedInputStream bis = new BufferedInputStream(fis);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            byte[] bytes = new byte[1024];
            int len;
            while ((len = bis.read(bytes)) != -1) {
                bos.write(bytes, 0, len);
            }
            System.out.println("复制完毕");
            bos.close();
            bis.close();


        } else {
            System.out.println("该文件不是文件或不存在");
            return;
        }

    }

}
